﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace ValidateBankAccountUtil
{
    public class ValidateBankAccountUtil
    {

        /// <summary>
        /// 公共方法
        /// </summary>
        /// <param name="param"></param>
        public static void ValidateBankAccount(BankAccountParam param)
        {
            ///数据加密和校验必填
            ///TODO
            Dictionary<string, object> obj = new Dictionary<string, object>();
            obj.Add("appId", param.AppId);
            obj.Add("appPwd", param.AppPwd);
            Dictionary<string, object> sub = new Dictionary<string, object>();
            sub.Add("tradeType", param.data.TradeType); //TradeTypeConst 校验必填条件
            sub.Add("cardNo", param.data.CardNo);//RSA 域长度为变长14-20位
            sub.Add("customerNm", param.data.CustomerName); //域长度为变长1-32位
            sub.Add("phoneNo", param.data.PhoneNo);
            sub.Add("certifId", param.data.CertifId);//RSA加密，加密前域长度为定长18位 C-按条件必填
            sub.Add("certifTp", param.data.CertifTp);//默认01 选填01-身份证 ；02-军官证 ；03-护照 ；04-回乡证 ；05-台胞证 ；06-警官证；07-士兵证 ；99-其它证件。 C-按条件必填
            sub.Add("CVN2", param.data.CVN2);//RSA C-按条件必填
            sub.Add("expired", param.data.Expired);//RSA  C-按条件必填
            sub.Add("orderId", param.data.OrderId);//yyyyMMddHHmmss+四位随机数
            sub.Add("transCode", param.data.TransCode);// 交易场景字典：01 直销银行； 02 消费金融； 03 银行二三类账户开户； 04 征信； 05 保险； 06 基金； 07 证券； 08 租赁； 09 海关申报； 99 其他
            obj.Add("data", sub);
            var res = ValidateBankAccountService(obj);
            if (res.ResponseCode == "0")
            {
                Console.WriteLine(res.Message);
            }
            else
            {
                Console.WriteLine(res.Message);
            }
        }
        /// <summary>
        ///调用接口方法
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public static ReturnBankAccountModel ValidateBankAccountService(Dictionary<string, object> param)
        {
            BankAccountService bank = new BankAccountService();
            var res = bank.ValidateBankAccountService(param);
            return res;
        }

        static void Main(string[] args)
        {
            BankAccountParam param = new BankAccountParam();
            //参数获取
            //TODO
            ValidateBankAccount(param);//调用公用方法
            Console.ReadKey();
        }
    }

}
